from random import choice
from django.contrib.auth.models import User
from appinput.models import App


def fake_app_data():
    # 删除所有的App数据
    App.objects.all().delete()
    print('delete all app data')
    # 获取所有的User用户信息
    user_set = User.objects.all()
    # 模拟公司四大应用组件
    app_list = ['ABC-FRONT-APP-ADMIN',
                'ABC-FRONT-APP-NGINX',
                'ABC-FRONT-APP-VUEJS',
                'ABC-FRONT-APP-ANGULAR',
                'ABC-FRONT-APP-BOOTSTRAP',
                'ABC-BACKEND-NODEJS',
                'ABC-BACKEND-JAVA',
                'ABC-BACKEND-GO',
                'ABC-BACKEND-PYTHON',
                'ABC-BACKEND-SCALA',
                'ZEP-FRONT-APP-ADMIN',
                'ZEP-FRONT-APP-NGINX',
                'ZEP-FRONT-APP-VUEJS',
                'ZEP-FRONT-APP-ANGULAR',
                'ZEP-FRONT-APP-BOOTSTRAP',
                'ZEP-BACKEND-NODEJS',
                'ZEP-BACKEND-JAVA',
                'ZEP-BACKEND-GO',
                'ZEP-BACKEND-PYTHON',
                'ZEP-BACKEND-SCALA',
                ]

    for app_item in app_list:
        # 假定jenkins_job和app的name一样，软件包名为app名加‘.zip’后缀
        # choice()方法，是随机选择一个用户作为管理用户，并且省去了可填不可天的字段。
        # 需要强调的是，当我们需要一个外键（models.ForeignKey）插入数据时，必须取到外键的实例，才能正确的插入。
        App.objects.create(name=app_item, jenkins_job=app_item,
                           git_url="http://192.168.58.128:8899",
                           build_cmd="mvn package",
                           package_name=app_item + '.zip',
                           manage_user=choice(user_set))

    print('create all app data')
